home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / kcl / kcl.lha / cmpnew / cmpopt.db < prev    next >
Text File  |  1986-05-22  |  25KB  |  674 lines

  1. ;;; CMPOPT.DB  Data base for open coding
  2. ;;;
  3. ;;; (C) Copyright Taiichi Yuasa and Masami Hagiya, 1984.  All rights reserved.
  4.  
  5. ;;; (definline property return-type side-effect-p new-object-p name arg-types
  6. ;;;            body)
  7.  
  8. (definline inline-always boolean nil nil null (t)
  9.            "#0==Cnil")
  10. (definline inline-always boolean nil nil symbolp (t)
  11.            "type_of(#0)==t_symbol")
  12. (definline inline-always boolean nil nil atom (t)
  13.            "type_of(#0)!=t_cons")
  14. (definline inline-always boolean nil nil consp (t)
  15.            "type_of(#0)==t_cons")
  16. (definline inline-always boolean nil nil listp (t)
  17.            "type_of(#0)==t_cons||#0==Cnil")
  18. (definline inline-always boolean nil nil numberp (t)
  19.            "type_of(#0)==t_fixnum||
  20. type_of(#0)==t_bignum||
  21. type_of(#0)==t_ratio||
  22. type_of(#0)==t_shortfloat||
  23. type_of(#0)==t_longfloat||
  24. type_of(#0)==t_complex")
  25. (definline inline-always boolean nil nil integerp (t)
  26.            "type_of(#0)==t_fixnum||type_of(#0)==t_bignum")
  27. ;(definline inline-always boolean nil nil rationalp (t)
  28. ;           "type_of(#0)==t_fixnum||
  29. ;type_of(#0)==t_bignum||
  30. ;type_of(#0)==t_ratio")
  31. (definline inline-always boolean nil nil floatp (t)
  32.            "type_of(#0)==t_shortfloat||type_of(#0)==t_longfloat")
  33. ;(definline inline-always boolean nil nil complexp (t)
  34. ;           "type_of(#0)==t_complex")
  35. (definline inline-always boolean nil nil characterp (t)
  36.            "type_of(#0)==t_character")
  37. (definline inline-always boolean nil nil stringp (t)
  38.            "type_of(#0)==t_string")
  39. ;(definline inline-always boolean nil nil bit-vector-p (t)
  40. ;           "type_of(#0)==t_bitvector")
  41. (definline inline-always boolean nil nil vectorp (t)
  42.            "type_of(#0)==t_vector||
  43. type_of(#0)==t_string||
  44. type_of(#0)==t_bitvector")
  45. (definline inline-always boolean nil nil arrayp (t)
  46.            "type_of(#0)==t_array||
  47. type_of(#0)==t_vector||
  48. type_of(#0)==t_string||
  49. type_of(#0)==t_bitvector")
  50. ;(definline inline-always boolean nil nil compiled-function-p (t)
  51. ;           "type_of(#0)==t_cfun||type_of(#0)==t_cclosure")
  52. (definline inline-always boolean nil nil keywordp (t)
  53.            "(type_of(#0)==t_symbol&&(#0)->s.s_hpack==keyword_package)")
  54.  
  55. (definline inline-always boolean nil nil eq (t t)
  56.            "#0==#1")
  57. (definline inline-always boolean nil nil eq (fixnum fixnum)
  58.            "0")
  59. (definline inline-always boolean nil nil eql (t t)
  60.            "eql(#0,#1)")
  61. (definline inline-always boolean nil nil eql (fixnum fixnum)
  62.            "(#0)==(#1)")
  63. (definline inline-always boolean nil nil equal (t t)
  64.            "equal(#0,#1)")
  65. (definline inline-always boolean nil nil equal (fixnum fixnum)
  66.            "(#0)==(#1)")
  67. (definline inline-always boolean nil nil equalp (t t)
  68.            "equalp(#0,#1)")
  69. (definline inline-always boolean nil nil equalp (fixnum fixnum)
  70.            "(#0)==(#1)")
  71.  
  72. (definline inline-safe boolean nil nil endp (t)
  73.            "endp(#0)")
  74. (definline inline-unsafe boolean nil nil endp (t)
  75.            "#0==Cnil")
  76.  
  77. (definline inline-unsafe boolean nil nil boundp (t)
  78.            "(#0)->s.s_dbind!=OBJNULL")
  79.  
  80. (definline inline-always boolean nil nil not (t)
  81.            "(#0)==Cnil")
  82.  
  83.  
  84. ;;;;  coercion
  85.  
  86. (definline inline-always fixnum nil nil char-code (character)
  87.            "#0")
  88. (definline inline-always character nil nil code-char (fixnum)
  89.            "#0")
  90.  
  91. (definline inline-always long-float nil nil float (fixnum-float)
  92.            "((longfloat)(#0))")
  93. (definline inline-always short-float nil nil float (fixnum-float)
  94.            "((shortfloat)(#0))")
  95.  
  96. (definline inline-always t nil t string (t)
  97.            "coerce_to_string(#0)")
  98.  
  99. (definline inline-always fixnum nil nil truncate (fixnum-float)
  100.            "(fixnum)(#0)")
  101.  
  102. ;;;;  list manipulation functions
  103.  
  104. (definline inline-safe t nil nil car (t)
  105.            "car(#0)")
  106. (definline inline-safe t nil nil cdr (t)
  107.            "cdr(#0)")
  108. (definline inline-safe t nil nil caar (t)
  109.            "caar(#0)")
  110. (definline inline-safe t nil nil cadr (t)
  111.            "cadr(#0)")
  112. (definline inline-safe t nil nil cdar (t)
  113.            "cdar(#0)")
  114. (definline inline-safe t nil nil cddr (t)
  115.            "cddr(#0)")
  116. (definline inline-safe t nil nil caaar (t)
  117.            "caaar(#0)")
  118. (definline inline-safe t nil nil caadr (t)
  119.            "caadr(#0)")
  120. (definline inline-safe t nil nil cadar (t)
  121.            "cadar(#0)")
  122. (definline inline-safe t nil nil caddr (t)
  123.            "caddr(#0)")
  124. (definline inline-safe t nil nil cdaar (t)
  125.            "cdaar(#0)")
  126. (definline inline-safe t nil nil cdadr (t)
  127.            "cdadr(#0)")
  128. (definline inline-safe t nil nil cddar (t)
  129.            "cddar(#0)")
  130. (definline inline-safe t nil nil cdddr (t)
  131.            "cdddr(#0)")
  132. (definline inline-safe t nil nil caaaar (t)
  133.            "caaaar(#0)")
  134. (definline inline-safe t nil nil caaadr (t)
  135.            "caaadr(#0)")
  136. (definline inline-safe t nil nil caadar (t)
  137.            "caadar(#0)")
  138. (definline inline-safe t nil nil caaddr (t)
  139.            "caaddr(#0)")
  140. (definline inline-safe t nil nil cadaar (t)
  141.            "cadaar(#0)")
  142. (definline inline-safe t nil nil cadadr (t)
  143.            "cadadr(#0)")
  144. (definline inline-safe t nil nil caddar (t)
  145.            "caddar(#0)")
  146. (definline inline-safe t nil nil cadddr (t)
  147.            "cadddr(#0)")
  148. (definline inline-safe t nil nil cdaaar (t)
  149.            "cdaaar(#0)")
  150. (definline inline-safe t nil nil cdaadr (t)
  151.            "cdaadr(#0)")
  152. (definline inline-safe t nil nil cdadar (t)
  153.            "cdadar(#0)")
  154. (definline inline-safe t nil nil cdaddr (t)
  155.            "cdaddr(#0)")
  156. (definline inline-safe t nil nil cddaar (t)
  157.            "cddaar(#0)")
  158. (definline inline-safe t nil nil cddadr (t)
  159.            "cddadr(#0)")
  160. (definline inline-safe t nil nil cdddar (t)
  161.            "cdddar(#0)")
  162. (definline inline-safe t nil nil cddddr (t)
  163.            "cddddr(#0)")
  164. (definline inline-safe t nil nil first (t)
  165.            "car(#0)")
  166. (definline inline-safe t nil nil second (t)
  167.            "cadr(#0)")
  168. (definline inline-safe t nil nil third (t)
  169.            "caddr(#0)")
  170. (definline inline-safe t nil nil fourth (t)
  171.            "cadddr(#0)")
  172. (definline inline-safe t nil nil rest (t)
  173.            "cdr(#0)")
  174.  
  175. (definline inline-unsafe t nil nil car (t)
  176.            "CMPcar(#0)")
  177. (definline inline-unsafe t nil nil cdr (t)
  178.            "CMPcdr(#0)")
  179. (definline inline-unsafe t nil nil caar (t)
  180.            "CMPcaar(#0)")
  181. (definline inline-unsafe t nil nil cadr (t)
  182.            "CMPcadr(#0)")
  183. (definline inline-unsafe t nil nil cdar (t)
  184.            "CMPcdar(#0)")
  185. (definline inline-unsafe t nil nil cddr (t)
  186.            "CMPcddr(#0)")
  187. (definline inline-unsafe t nil nil caaar (t)
  188.            "CMPcaaar(#0)")
  189. (definline inline-unsafe t nil nil caadr (t)
  190.            "CMPcaadr(#0)")
  191. (definline inline-unsafe t nil nil cadar (t)
  192.            "CMPcadar(#0)")
  193. (definline inline-unsafe t nil nil caddr (t)
  194.            "CMPcaddr(#0)")
  195. (definline inline-unsafe t nil nil cdaar (t)
  196.            "CMPcdaar(#0)")
  197. (definline inline-unsafe t nil nil cdadr (t)
  198.            "CMPcdadr(#0)")
  199. (definline inline-unsafe t nil nil cddar (t)
  200.            "CMPcddar(#0)")
  201. (definline inline-unsafe t nil nil cdddr (t)
  202.            "CMPcdddr(#0)")
  203. (definline inline-unsafe t nil nil caaaar (t)
  204.            "CMPcaaaar(#0)")
  205. (definline inline-unsafe t nil nil caaadr (t)
  206.            "CMPcaaadr(#0)")
  207. (definline inline-unsafe t nil nil caadar (t)
  208.            "CMPcaadar(#0)")
  209. (definline inline-unsafe t nil nil caaddr (t)
  210.            "CMPcaaddr(#0)")
  211. (definline inline-unsafe t nil nil cadaar (t)
  212.            "CMPcadaar(#0)")
  213. (definline inline-unsafe t nil nil cadadr (t)
  214.            "CMPcadadr(#0)")
  215. (definline inline-unsafe t nil nil caddar (t)
  216.            "CMPcaddar(#0)")
  217. (definline inline-unsafe t nil nil cadddr (t)
  218.            "CMPcadddr(#0)")
  219. (definline inline-unsafe t nil nil cdaaar (t)
  220.            "CMPcdaaar(#0)")
  221. (definline inline-unsafe t nil nil cdaadr (t)
  222.            "CMPcdaadr(#0)")
  223. (definline inline-unsafe t nil nil cdadar (t)
  224.            "CMPcdadar(#0)")
  225. (definline inline-unsafe t nil nil cdaddr (t)
  226.            "CMPcdaddr(#0)")
  227. (definline inline-unsafe t nil nil cddaar (t)
  228.            "CMPcddaar(#0)")
  229. (definline inline-unsafe t nil nil cddadr (t)
  230.            "CMPcddadr(#0)")
  231. (definline inline-unsafe t nil nil cdddar (t)
  232.            "CMPcdddar(#0)")
  233. (definline inline-unsafe t nil nil cddddr (t)
  234.            "CMPcddddr(#0)")
  235. (definline inline-unsafe t nil nil first (t)
  236.            "CMPcar(#0)")
  237. (definline inline-unsafe t nil nil second (t)
  238.            "CMPcadr(#0)")
  239. (definline inline-unsafe t nil nil third (t)
  240.            "CMPcaddr(#0)")
  241. (definline inline-unsafe t nil nil fourth (t)
  242.            "CMPcadddr(#0)")
  243. (definline inline-unsafe t nil nil rest (t)
  244.            "CMPcdr(#0)")
  245.  
  246. (definline inline-always t nil nil nth (t t)
  247.            "nth(fixint(#0),#1)")
  248. (definline inline-always t nil nil nthcdr (t t)
  249.            "nthcdr(fixint(#0),#1)")
  250. (definline inline-unsafe t nil nil nth (t t)
  251.            "nth(fix(#0),#1)")
  252. (definline inline-unsafe t nil nil nthcdr (t t)
  253.            "nthcdr(fix(#0),#1)")
  254. (definline inline-always t nil nil nth (fixnum t)
  255.            "nth(#0,#1)")
  256. (definline inline-always t nil nil nthcdr (fixnum t)
  257.            "nthcdr(#0,#1)")
  258.  
  259. (definline inline-always t nil t cons (t t)
  260.            "make_cons(#0,#1)")
  261.  
  262. (definline inline-always t nil nil list nil "Cnil")
  263. (definline inline-always t nil t list (t) "make_cons(#0,Cnil)")
  264. (definline inline-always t nil t list (t t) list-inline)
  265. (definline inline-always t nil t list (t t t) list-inline)
  266. (definline inline-always t nil t list (t t t t) list-inline)
  267. (definline inline-always t nil t list (t t t t t) list-inline)
  268. (definline inline-always t nil t list (t t t t t t) list-inline)
  269. (definline inline-always t nil t list (t t t t t t t) list-inline)
  270. (definline inline-always t nil t list (t t t t t t t t) list-inline)
  271. (definline inline-always t nil t list (t t t t t t t t t) list-inline)
  272. (definline inline-always t nil t list (t t t t t t t t t t) list-inline)
  273.  
  274. (definline inline-always t nil nil list* (t) "#0")
  275. (definline inline-always t nil t list* (t t) "make_cons(#0,#1)")
  276. (definline inline-always t nil t list* (t t t) list*-inline)
  277. (definline inline-always t nil t list* (t t t t) list*-inline)
  278. (definline inline-always t nil t list* (t t t t t) list*-inline)
  279. (definline inline-always t nil t list* (t t t t t t) list*-inline)
  280. (definline inline-always t nil t list* (t t t t t t t) list*-inline)
  281. (definline inline-always t nil t list* (t t t t t t t t) list*-inline)
  282. (definline inline-always t nil t list* (t t t t t t t t t) list*-inline)
  283. (definline inline-always t nil t list* (t t t t t t t t t t) list*-inline)
  284.  
  285. (definline inline-always t nil t append (t t)
  286.            "append(#0,#1)")
  287. (definline inline-always t t nil nconc (t t)
  288.            "nconc(#0,#1)")
  289. (definline inline-always t nil t reverse (t)
  290.            "reverse(#0)")
  291. (definline inline-always t t t nreverse (t)
  292.            "nreverse(#0)")
  293.  
  294. (definline inline-always fixnum nil nil length (t)
  295.            "length(#0)")
  296.  
  297.  
  298. ;;;; plist
  299.  
  300. (definline inline-always t nil nil get (t t t)
  301.            "get(#0,#1,#2)")
  302. (definline inline-always t nil nil get (t t)
  303.            "get(#0,#1,Cnil)")
  304.  
  305. (definline inline-always t t nil si:putprop (t t t)
  306.            "putprop(#0,#1,#2)")
  307.  
  308. (definline inline-always t t nil remprop (t t)
  309.            "remprop(#0,#1)")
  310.  
  311.  
  312. ;;;;  array and sequence
  313.  
  314. ;; svref, char, schar, elt
  315.  
  316. ; safe
  317. (definline inline-always t nil t svref (t t)
  318.            "aref1(#0,fixint(#1))")
  319. (definline inline-always t nil t char (t t)
  320.            "elt(#0,fixint(#1))")
  321. (definline inline-always t nil t schar (t t)
  322.            "elt(#0,fixint(#1))")
  323. (definline inline-always t nil t elt (t t)
  324.            "elt(#0,fixint(#1))")
  325.  
  326. ; safe, fixnum index
  327. (definline inline-always t nil t svref (t fixnum)
  328.            "aref1(#0,#1)")
  329. (definline inline-always t nil t char (t fixnum)
  330.            "elt(#0,#1)")
  331. (definline inline-always t nil t schar (t fixnum)
  332.            "elt(#0,#1)")
  333. (definline inline-always t nil t elt (t fixnum)
  334.            "elt(#0,#1)")
  335.  
  336. ; unsafe
  337. (definline inline-unsafe t nil nil svref (t t)
  338.            "(#0)->v.v_self[fix(#1)]")
  339. (definline inline-unsafe t nil nil char (t t)
  340.            "code_char((#0)->ust.ust_self[fix(#1)])")
  341. (definline inline-unsafe t nil nil schar (t t)
  342.            "code_char((#0)->ust.ust_self[fix(#1)])")
  343. (definline inline-unsafe t nil t elt (t t)
  344.            "elt(#0,fix(#1))")
  345.  
  346. ; unsafe, type specified, fixnum index
  347. (definline inline-unsafe t nil nil svref (t fixnum)
  348.            "(#0)->v.v_self[#1]")
  349. (definline inline-unsafe character nil nil char (t fixnum)
  350.            "(#0)->ust.ust_self[#1]")
  351. (definline inline-unsafe character nil nil schar (t fixnum)
  352.            "(#0)->ust.ust_self[#1]")
  353.  
  354. ;; si:svset, si:char-set, si:schar-set, si:elt-set
  355.  
  356. ; safe
  357. (definline inline-always t t nil si:svset (t t t)
  358.            "aset1(#0,fixint(#1),#2)")
  359. (definline inline-always t t nil si:char-set (t t t)
  360.            "elt_set(#0,fixint(#1),#2)")
  361. (definline inline-always t t nil si:schar-set (t t t)
  362.            "elt_set(#0,fixint(#1),#2)")
  363. (definline inline-always t t nil si:elt-set (t t t)
  364.            "elt_set(#0,fixint(#1),#2)")
  365.  
  366. ; safe, fixnum index
  367. (definline inline-always t t nil si:svset (t fixnum t)
  368.            "aset1(#0,#1,#2)")
  369. (definline inline-always t t nil si:char-set (t fixnum t)
  370.            "elt_set(#0,#1,#2)")
  371. (definline inline-always t t nil si:schar-set (t fixnum t)
  372.            "elt_set(#0,#1,#2)")
  373. (definline inline-always t t nil si:elt-set (t fixnum t)
  374.            "elt_set(#0,#1,#2)")
  375.  
  376. ; unsafe
  377. (definline inline-unsafe t t nil si:svset (t t t)
  378.            "((#0)->v.v_self[fix(#1)]=(#2))")
  379. (definline inline-unsafe t t nil si:char-set (t t t)
  380.            "((#0)->ust.ust_self[fix(#1)]=char_code(#2),(#2))")
  381. (definline inline-unsafe t t nil si:schar-set (t t t)
  382.            "((#0)->ust.ust_self[fix(#1)]=char_code(#2),(#2))")
  383. (definline inline-unsafe t t nil si:elt-set (t t t)
  384.            "elt_set(#0,fix(#1),#2)")
  385.  
  386. ; unsafe, type specified, fixnum index
  387. (definline inline-unsafe t t nil si:svset (t fixnum t)
  388.            "(#0)->v.v_self[#1]= #2")
  389. (definline inline-unsafe character t nil si:char-set (t fixnum character)
  390.            "(#0)->ust.ust_self[#1]= #2")
  391. (definline inline-unsafe character t nil si:schar-set(t fixnum character)
  392.            "(#0)->ust.ust_self[#1]= #2")
  393.  
  394. ;; aref, one index
  395.  
  396. ; safe
  397. (definline inline-always t nil t aref (t t)
  398.            "aref1(#0,fixint(#1))")
  399. ; unsafe
  400. (definline inline-unsafe t nil t aref (t t)
  401.            "aref1(#0,fix(#1))")
  402. ; safe, fixnum index
  403. (definline inline-always t nil t aref (t fixnum)
  404.            "aref1(#0,#1)")
  405.  
  406. ; unsafe, type specified, fixnum index
  407. (definline inline-unsafe t nil nil aref ((array t) fixnum)
  408.            "(#0)->v.v_self[#1]")
  409. (definline inline-unsafe character nil nil aref ((array string-char) fixnum)
  410.            "(#0)->ust.ust_self[#1]")
  411. (definline inline-unsafe fixnum nil nil aref ((array fixnum) fixnum)
  412.            "(#0)->fixa.fixa_self[#1]")
  413. (definline inline-unsafe short-float nil nil aref ((array short-float) fixnum)
  414.            "(#0)->sfa.sfa_self[#1]")
  415. (definline inline-unsafe long-float nil nil aref ((array long-float) fixnum)
  416.            "(#0)->lfa.lfa_self[#1]")
  417.  
  418. ;; aref, two indices
  419.  
  420. ; unsafe
  421. (definline inline-unsafe t nil t aref (t t t)
  422.            "aref(#0,fix(#1)*(#0)->a.a_dims[1]+fix(#2))")
  423.  
  424. ; unsafe, type spesified, fixnum index
  425. (definline inline-unsafe t nil nil aref ((array t) fixnum fixnum)
  426.            "(#0)->a.a_self[#1*(#0)->a.a_dims[1]+#2]")
  427. (definline inline-unsafe character nil nil aref
  428.            ((array string-char) fixnum fixnum)
  429.            "(#0)->ust.ust_self[#1*(#0)->a.a_dims[1]+#2]")
  430. (definline inline-unsafe fixnum nil nil aref ((array fixnum) fixnum fixnum)
  431.            "(#0)->fixa.fixa_self[#1*(#0)->a.a_dims[1]+#2]")
  432. (definline inline-unsafe short-float nil nil aref
  433.            ((array short-float) fixnum fixnum)
  434.            "(#0)->sfa.sfa_self[#1*(#0)->a.a_dims[1]+#2]")
  435. (definline inline-unsafe long-float nil nil aref
  436.            ((array long-float) fixnum fixnum)
  437.            "(#0)->lfa.lfa_self[#1*(#0)->a.a_dims[1]+#2]")
  438.  
  439. ;; si:aset, one index
  440.  
  441. ; safe
  442. (definline inline-always t t nil si:aset (t t t)
  443.            "aset1(#0,fixint(#1),#2)")
  444. ; unsafe
  445. (definline inline-unsafe t t nil si:aset (t t t)
  446.            "aset1(#0,fix(#1),#2)")
  447. ; safe, fixnum index
  448. (definline inline-always t t nil si:aset (t fixnum t)
  449.            "aset1(#0,#1,#2)")
  450.  
  451. ; unsafe, type spesified, fixnum indices
  452. (definline inline-unsafe t t nil si:aset ((array t) fixnum t)
  453.            "(#0)->v.v_self[#1]= #2")
  454. (definline inline-unsafe character t nil si:aset
  455.            ((array string-char) fixnum character)
  456.            "(#0)->ust.ust_self[#1]= #2")
  457. (definline inline-unsafe fixnum t nil si:aset ((array fixnum) fixnum fixnum)
  458.            "(#0)->fixa.fixa_self[#1]= #2")
  459. (definline inline-unsafe short-float t nil si:aset
  460.            ((array short-float) fixnum short-float)
  461.            "(#0)->sfa.sfa_self[#1]= #2")
  462. (definline inline-unsafe long-float t nil si:aset
  463.            ((array long-float) fixnum long-float)
  464.            "(#0)->lfa.lfa_self[#1]= #2")
  465.  
  466. ;; si:aset, two indices
  467.  
  468. ; unsafe
  469. (definline inline-unsafe t t nil si:aset (t t t t)
  470.            "aset(#0,fix(#1)*(#0)->a.a_dims[1]+fix(#2),#3)")
  471.  
  472. ; unsafe, type spesified, fixnum indices
  473. (definline inline-unsafe t t nil si:aset ((array t) fixnum fixnum t)
  474.            "(#0)->a.a_self[#1*(#0)->a.a_dims[1]+#2]= #3")
  475. (definline inline-unsafe character t nil si:aset
  476.            ((array string-char) fixnum fixnum character)
  477.            "(#0)->ust.ust_self[#1*(#0)->a.a_dims[1]+#2]= #3")
  478. (definline inline-unsafe fixnum t nil si:aset
  479.            ((array fixnum) fixnum fixnum fixnum)
  480.            "(#0)->fixa.fixa_self[#1*(#0)->a.a_dims[1]+#2]= #3")
  481. (definline inline-unsafe short-float t nil si:aset
  482.            ((array short-float) fixnum fixnum short-float)
  483.            "(#0)->sfa.sfa_self[#1*(#0)->a.a_dims[1]+#2]= #3")
  484. (definline inline-unsafe long-float t nil si:aset
  485.            ((array long-float) fixnum fixnum long-float)
  486.            "(#0)->lfa.lfa_self[#1*(#0)->a.a_dims[1]+#2]= #3")
  487.  
  488.  
  489. ;;;;  I/O
  490.  
  491. (definline inline-always t t nil princ (t t)
  492.            "princ(#0,#1)")
  493. (definline inline-always t t nil princ (t)
  494.            "princ(#0,Cnil)")
  495. (definline inline-always t t nil prin1 (t t)
  496.            "prin1(#0,#1)")
  497. (definline inline-always t t nil prin1 (t)
  498.            "prin1(#0,Cnil)")
  499. (definline inline-always t t nil print (t t)
  500.            "print(#0,#1)")
  501. (definline inline-always t t nil print (t)
  502.            "print(#0,Cnil)")
  503. (definline inline-always t t nil terpri (t)
  504.            "terpri(#0)")
  505. (definline inline-always t t nil terpri ()
  506.            "terpri(Cnil)")
  507.  
  508.  
  509. ;;;;  arithmetic
  510.  
  511. ; safe, general
  512. (definline inline-always t nil t + (t t)
  513.            "number_plus(#0,#1)")
  514. (definline inline-always t nil t 1+ (t)
  515.            "one_plus(#0)")
  516. (definline inline-always t nil t - (t)
  517.            "number_negate(#0)")
  518. (definline inline-always t nil t - (t t)
  519.            "number_minus(#0,#1)")
  520. (definline inline-always t nil t 1- (t)
  521.            "one_minus(#0)")
  522. (definline inline-always t nil t * (t t)
  523.            "number_times(#0,#1)")
  524. (definline inline-always t nil t expt (t t)
  525.            "number_expt(#0,#1)")
  526.  
  527. ; safe, fixnum
  528. (definline inline-always fixnum nil nil 1+ (fixnum)
  529.            "(#0)+1")
  530. (definline inline-always fixnum nil nil + (fixnum fixnum)
  531.            "(#0)+(#1)")
  532. (definline inline-always fixnum nil nil 1- (fixnum)
  533.            "(#0)-1")
  534. (definline inline-always fixnum nil nil - (fixnum fixnum)
  535.            "(#0)-(#1)")
  536. (definline inline-always fixnum nil nil - (fixnum)
  537.            "-(#0)")
  538. (definline inline-always fixnum nil nil * (fixnum fixnum)
  539.            "(#0)*(#1)")
  540. (definline inline-always fixnum nil nil floor (fixnum fixnum)
  541.            "(#0>=0&>0?(#0)/(#1):ifloor(#0,#1))")
  542. (definline inline-always fixnum nil nil mod (fixnum fixnum)
  543.            "(#0>=0&>0?(#0)%(#1):imod(#0,#1))")
  544.  
  545. (definline inline-always fixnum nil nil expt (fixnum fixnum)
  546.   (lambda (loc1 loc2)
  547.           (if (and (consp loc1)
  548.                    (eq (car loc1) 'FIXNUM-LOC)
  549.                    (consp (cadr loc1))
  550.                    (eq (caadr loc1) 'FIXNUM-VALUE)
  551.                    (equal (caddr (cadr loc1)) 2))
  552.               (wt "(1<<(" loc2 "))")
  553.               (wt "fixnum_expt(" loc1 #\, loc2 #\) ))))
  554.  
  555. ; safe, fixnum-float, short-float result
  556. (definline inline-always short-float nil nil 1+ (fixnum-float)
  557.            "(double)(#0)+1")
  558. (definline inline-always short-float nil nil + (fixnum-float fixnum-float)
  559.            "(double)(#0)+(double)(#1)")
  560. (definline inline-always short-float nil nil 1- (fixnum-float)
  561.            "(double)(#0)-1")
  562. (definline inline-always short-float nil nil - (fixnum-float fixnum-float)
  563.            "(double)(#0)-(double)(#1)")
  564. (definline inline-always short-float nil nil - (fixnum-float)
  565.            "-(double)(#0)")
  566. (definline inline-always short-float nil nil * (fixnum-float fixnum-float)
  567.            "(double)(#0)*(double)(#1)")
  568. (definline inline-always short-float nil nil / (fixnum-float fixnum-float)
  569.            "(double)(#0)/(double)(#1)")
  570.  
  571. ; safe, fixnum-float, long-float result
  572. (definline inline-always long-float nil nil 1+ (fixnum-float)
  573.            "(double)(#0)+1")
  574. (definline inline-always long-float nil nil 1- (fixnum-float)
  575.            "(double)(#0)-1")
  576. (definline inline-always long-float nil nil - (fixnum-float)
  577.            "-(double)(#0)")
  578. (definline inline-always long-float nil nil + (fixnum-float fixnum-float)
  579.            "(double)(#0)+(double)(#1)")
  580. (definline inline-always long-float nil nil - (fixnum-float fixnum-float)
  581.            "(double)(#0)-(double)(#1)")
  582. (definline inline-always long-float nil nil * (fixnum-float fixnum-float)
  583.            "(double)(#0)*(double)(#1)")
  584. (definline inline-always long-float nil nil / (fixnum-float fixnum-float)
  585.            "(double)(#0)/(double)(#1)")
  586.  
  587. (definline inline-always long-float nil nil sin (long-float)
  588.            "sin(#0)")
  589. (definline inline-always long-float nil nil cos (long-float)
  590.            "cos(#0)")
  591. (definline inline-always long-float nil nil tan (long-float)
  592.            "tan(#0)")
  593.  
  594.  
  595. ;;;;  arithmetic predicates
  596.  
  597. ; safe, general
  598. (definline inline-always boolean nil nil zerop (t)
  599.            "number_compare(small_fixnum(0),#0)==0")
  600. (definline inline-always boolean nil nil plusp (t)
  601.            "number_compare(small_fixnum(0),#0)<0")
  602. (definline inline-always boolean nil nil minusp (t)
  603.            "number_compare(small_fixnum(0),#0)>0")
  604. (definline inline-always boolean nil nil = (t t)
  605.            "number_compare(#0,#1)==0")
  606. (definline inline-always boolean nil nil /= (t t)
  607.            "number_compare(#0,#1)!=0")
  608. (definline inline-always boolean nil nil < (t t)
  609.            "number_compare(#0,#1)<0")
  610. (definline inline-always boolean nil nil > (t t)
  611.            "number_compare(#0,#1)>0")
  612. (definline inline-always boolean nil nil <= (t t)
  613.            "number_compare(#0,#1)<=0")
  614. (definline inline-always boolean nil nil >= (t t)
  615.            "number_compare(#0,#1)>=0")
  616.  
  617. (definline inline-always t nil nil max (t t)
  618.            "(number_compare(#0,#1)>=0?#0:#1)")
  619. (definline inline-always t nil nil min (t t)
  620.            "(number_compare(#0,#1)<=0?#0:#1)")
  621.  
  622. ; safe, typed
  623. (definline inline-always boolean nil nil zerop (fixnum-float)
  624.            "(#0)==0")
  625. (definline inline-always boolean nil nil plusp (fixnum-float)
  626.            "(#0)>0")
  627. (definline inline-always boolean nil nil minusp (fixnum-float)
  628.            "(#0)<0")
  629. (definline inline-always boolean nil nil = (fixnum-float fixnum-float)
  630.            "(#0)==(#1)")
  631. (definline inline-always boolean nil nil /= (fixnum-float fixnum-float)
  632.            "(#0)!=(#1)")
  633. (definline inline-always boolean nil nil < (fixnum-float fixnum-float)
  634.            "(#0)<(#1)")
  635. (definline inline-always boolean nil nil <= (fixnum-float fixnum-float)
  636.            "(#0)<=(#1)")
  637. (definline inline-always boolean nil nil > (fixnum-float fixnum-float)
  638.            "(#0)>(#1)")
  639. (definline inline-always boolean nil nil >= (fixnum-float fixnum-float)
  640.            "(#0)>=(#1)")
  641.  
  642. (definline inline-always fixnum nil nil max (fixnum fixnum)
  643.            "(#0)>=(#1)?#0:#1")
  644. (definline inline-always fixnum nil nil min (fixnum fixnum)
  645.            "(#0)<=(#1)?#0:#1")
  646.  
  647.  
  648. ;;;;  character predicates
  649.  
  650. ; safe, general
  651. (definline inline-unsafe boolean nil nil char= (t t)
  652.            "eql(#0,#1)")
  653. (definline inline-unsafe boolean nil nil char/= (t t)
  654.            "!eql(#0,#1)")
  655. ; unsafe, general
  656. (definline inline-unsafe boolean nil nil char= (t t)
  657.            "char_code(#0)==char_code(#1)")
  658. (definline inline-unsafe boolean nil nil char/= (t t)
  659.            "char_code(#0)!=char_code(#1)")
  660.  
  661. ; safe, typed
  662. (definline inline-always boolean nil nil char= (character character)
  663.            "(#0)==(#1)")
  664. (definline inline-always boolean nil nil char/= (character character)
  665.            "(#0)!=(#1)")
  666. (definline inline-always boolean nil nil char< (character character)
  667.            "(#0)<(#1)")
  668. (definline inline-always boolean nil nil char<= (character character)
  669.            "(#0)<=(#1)")
  670. (definline inline-always boolean nil nil char> (character character)
  671.            "(#0)>(#1)")
  672. (definline inline-always boolean nil nil char>= (character character)
  673.            "(#0)>=(#1)")
  674.